package com.swa99ylum.pxf.cell.indexer;

import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.xssf.usermodel.XSSFCell;

import com.swa99ylum.pxf.bean.Index;


/**
 * 隔"blank"索引器（继承于 隔"空"索引器）：
 * 
 * => 隔"空"索引器：	会跳过 n 格 cell，不关心 cell 的 内容
 * => 隔"blank"索引器：	会跳过 n 个 blank cell，
 * 						a、只有 cell 为 blank cell 时，才算作 "跳过 1 次 cell"，即 countdown 才会 减 1
 * 						b、否则 countdown 的 值不变
 * 
 * 在使用 BlankCountdownCellIndexer 时，请注意，一定要保证 初始情况下 ，xlsx 里面没有 脏数据，
 * 否则会影响 indexer 数格子
 */
public class BlankCountdownCellIndexer extends CountdownCellIndexer {
	
	public BlankCountdownCellIndexer() {
		super();
	}
	
	/** 
	 * 独立式
	 */
	public BlankCountdownCellIndexer(int countdown) {
		super(countdown);
	}
	
	/**
	 * 群组式
	 */
	public BlankCountdownCellIndexer(Index index, int countdown) {
		super(index, countdown);
	}
	

	/**
	 * 开始 的 条件：倒数完毕，即 countdown <= 0
	 */
	public boolean triggerBeginning(XSSFCell cell) {
		
		if(countdown <= 0) {//触发开始
			return true;
			
		}else {//无法开始
			
			if(isBlank(cell)) countdown--;
			
			return false;
			
		}
		
	}
	
	
	/**
	 * 判断是否为 "空 单元格"
	 * 1、null 单元格：cell == null
	 * 2、blank 单元格：cell != null，但是 cell 为 blank
	 */
	@SuppressWarnings("deprecation")
	public boolean isBlank(XSSFCell cell) {
		if(cell == null) {// null 单元格
			return true;
			
		}else {
			if(cell!=null && cell.getCellType()!=CellType.BLANK.getCode())
				return false;
			
			return true;
		}
	}
	

}
